//package com.zmn.mcc.es;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONObject;
//import com.zmn.mcc.model.consts.ElasticConsts;
//import com.zmn.mcc.model.entity.staff.McStaffQuery;
//import com.zmn.mcc.model.es.staff.EsStaff;
//import com.zmn.mcc.services.interfaces.staff.StaffService;
//import org.elasticsearch.index.query.BoolQueryBuilder;
//import org.elasticsearch.index.query.QueryBuilders;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.data.domain.PageRequest;
//import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
//import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
//import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
//import org.springframework.data.elasticsearch.core.query.SearchQuery;
//import org.springframework.stereotype.Repository;
//import javax.annotation.Resource;
//import java.util.*;
//import java.util.stream.Collectors;
//
///**
// * 描述:员工拼音查询名字服务类
// *
// * @author wangjie
// * @since 17:50 2019/4/17
// **/
//@Repository
//public class EsStaffService {
//
//    private Logger logger = LoggerFactory.getLogger(this.getClass());
//
//    @Resource
//    ElasticsearchTemplate elasticsearchTemplate;
//
//    @Resource
//    EsStaffWorkRepository esStaffWorkRepository;
//
//    @Resource
//    StaffService staffService;
//
//    /**
//     * 描述: 初始化员工数据到es
//     *
//     * @author wangjie
//     * @since 17:51 2019/4/17
//     **/
//    public void initEsData() {
//        List<EsStaff> esStaffList = Optional.ofNullable(staffService.listByQuery(new McStaffQuery())).orElse(Collections.emptyList())
//                .stream()
//                .map(staff -> new EsStaff(staff.getStaffId(), staff.getStaffName(), staff.getRealName(), staff.getMobile(), staff.getMail()))
//                .collect(Collectors.toList());
//        esStaffWorkRepository.deleteAll();
//        esStaffWorkRepository.saveAll(esStaffList);
//        logger.info("初始化es数据成功 {}", esStaffList.size());
//    }
//
//    /**
//     * 描述: 拼音或者汉字 传入es 查询
//     *
//     * @param pinyinName 拼音或者汉字
//     * @return java.util.ArrayList<java.lang.Integer>
//     * @author wangjie
//     * @since 17:57 2019/4/17
//     **/
//    public ArrayList<Integer> findByStaffName(String pinyinName) {
//
//        BoolQueryBuilder builder = new BoolQueryBuilder();
//        builder.should(QueryBuilders.termQuery("realName", pinyinName));
//        builder.should(QueryBuilders.matchQuery("mobile", pinyinName));
//        builder.should(QueryBuilders.termQuery("realName.pinyin", pinyinName));
//
//        SearchQuery searchQuery = new NativeSearchQuery(builder);
//
//        searchQuery.setPageable(PageRequest.of(0, 10000));
//        searchQuery.addIndices(ElasticConsts.PLAT_STAFF_INDEX);
//
//        searchQuery.addTypes(ElasticConsts.PLAT_STAFF_TYPE);
//
//        AggregatedPage<EsStaff> esStaffs = elasticsearchTemplate.queryForPage(searchQuery, EsStaff.class);
//
//        return Optional.ofNullable(esStaffs.getContent()).orElse(Collections.emptyList())
//                .stream()
//                .map(EsStaff::getStaffId)
//                .collect(Collectors.toCollection(ArrayList::new));
//    }
//
//    /**
//     * 描述: 添加员工数据到es
//     *
//     * @param esStaff 员工es 对象
//     * @return boolean
//     * @author wangjie
//     * @since 17:00 2019/4/17
//     **/
//    public boolean putStaff(EsStaff esStaff) {
//        try {
//            esStaffWorkRepository.save(esStaff);
//        } catch (Exception e) {
//            logger.error(e.getMessage(), e);
//            return false;
//        }
//        return true;
//    }
//
//    /**
//     * 描述: 修改员工es 数据
//     *
//     * @param esStaff 员工es 对象 内部的staffId为必传
//     * @return boolean
//     * @author wangjie
//     * @since 17:05 2019/4/17
//     **/
//    public boolean modifyStaff(EsStaff esStaff) {
//
//        if (Objects.isNull(esStaff.getStaffId())) {
//            logger.info("修改员工es数据失败 staffId:{}", esStaff.getStaffId());
//            return false;
//        }
//        try {
//            EsStaff staff = esStaffWorkRepository.findById(esStaff.getStaffId()).orElseThrow(RuntimeException::new);
//
//            if (Objects.nonNull(esStaff.getMobile())) {
//                staff.setMobile(esStaff.getMobile());
//            }
//            if (Objects.nonNull(esStaff.getRealName())) {
//                staff.setRealName(esStaff.getRealName());
//            }
//            if (Objects.nonNull(esStaff.getStaffName())) {
//                staff.setStaffName(esStaff.getStaffName());
//            }
//            esStaffWorkRepository.save(staff);
//            return true;
//        } catch (Exception e) {
//            logger.error("修改员工es数据失败,message:{},exception:{}", e.getMessage(), e);
//            return false;
//        }
//    }
//
//    /**
//     * 描述: 通过员工id 删除es 数据
//     *
//     * @param staffId 员工id
//     * @return boolean
//     * @author wangjie
//     * @since 18:02 2019/4/17
//     **/
//    public boolean deleteStaffByStaffId(Integer staffId) {
//        if (Objects.isNull(staffId)) {
//            return false;
//        }
//        String delete = elasticsearchTemplate.delete(ElasticConsts.PLAT_STAFF_INDEX, ElasticConsts.PLAT_STAFF_TYPE, staffId.toString());
//        JSONObject deleteDTO = JSON.parseObject(delete);
//        return Objects.equals(deleteDTO.getString("found"), "true");
//    }
//
//}
